# -*- coding: utf-8 -*-
from selenium import webdriver          #
from lxml import etree
import requests

#            对于这里的百度文库中的内容，由于要爬取的对象位于::after 与 ::before 之间      （位于伪元素中）
#            所以，这里要采用 selenium + PhantomJS(无界面浏览器) ,将网页内容预先渲染出来。
#            【注：若不采用此法，直接爬取HTML文档，不会爬到伪元素】

driver = webdriver.PhantomJS()
driver.get("https://wenku.baidu.com/view/2be94243be1e650e52ea99eb.html")
p = driver.page_source

imgs = etree.HTML(p).xpath('//*[@id="flow-ppt-wrap"]/div/div/div/div/img')
count = 0
path = 'H:\\新建文件夹\\百度文库\\ppt1\\'               # 路径
for img in imgs:
    count += 1

    img_url = img.xpath('@data-src')            # 由于前三张图片的 地址位于 src 中,后面的图片地址位于 data-src 中
    if img_url == []:                           # 所以，判断当 data-src 中没有内容的时候,换用另一种方法
        img_url = img.xpath('@src')

    file_name = path + str(count) + '.jpg'
    imgs = requests.get(img_url[0])             # 对图片网址发出请求

    # 保存文件
    try:
        f = open(file_name, 'ab+')              # 打开
        f.write(imgs.content)                   # 写入内容
        f.close()                               # 关闭
    except:
        print("error")
